/**
 * Created by Andy on 2018/12/19.
 * js实现加减乘除基本算法
 * 避免javascript本身进度丢失的问题
 */
var math = math || {};
define(function () {
    math={
        add:function(a, b) {//相加
            var c, d, e;
            try {
                c = a.toString().split(".")[1].length;
            } catch (f) {
                c = 0;
            }
            try {
                d = b.toString().split(".")[1].length;
            } catch (f) {
                d = 0;
            }
            return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) + this.mul(b, e)) / e;
        },
        sub:function(a, b) {//相减
            var c, d, e;
            try {
                c = a.toString().split(".")[1].length;
            } catch (f) {
                c = 0;
            }
            try {
                d = b.toString().split(".")[1].length;
            } catch (f) {
                d = 0;
            }
            return e = Math.pow(10, Math.max(c, d)), (this.mul(a, e) - this.mul(b, e)) / e;
        },
        mul:function(a, b) {//乘法
            var c = 0,
                d = a.toString(),
                e = b.toString();
            try {
                c += d.split(".")[1].length;
            } catch (f) { }
            try {
                c += e.split(".")[1].length;
            } catch (f) { }
            return Number(d.replace(".", "")) * Number(e.replace(".", "")) / Math.pow(10, c);
        },
        div:function(a, b) {//除
            var c, d, e = 0,
                f = 0;
            try {
                e = a.toString().split(".")[1].length;
            } catch (g) { }
            try {
                f = b.toString().split(".")[1].length;
            } catch (g) { }
            return c = Number(a.toString().replace(".", "")), d = Number(b.toString().replace(".", "")), this.mul(c / d, Math.pow(10, f - e));
        }
    }
});
//给Number类型增加一个add方法，调用起来更加方便。
Number.prototype.add = function (arg) {
    return math.add(arg, this);
};
//给Number类增加一个sub方法，调用起来更加方便
Number.prototype.sub = function (arg) {
    return math.sub(this, arg);
};
//给Number类型增加一个mul方法
Number.prototype.mul = function (arg) {
    return math.mul(arg, this);
};
//给Number类型扩展一个div方法
Number.prototype.div = function (arg) {
    return math.div(this, arg);
};
